import Axios from 'axios'
import router from '../router'
// import { Loading } from 'element-plus'
// import store from './../store'

// 创建一个Axios的实例：
console.log(import.meta.env.VITE_BASE_URL);

let http = Axios.create({
  timeout: 10000,
  baseURL: import.meta.env.VITE_BASE_URL  // 获取.env.[模式]里面使用VITE_开头的环境变量的值
})

export default http

// let loadingInstance
http.interceptors.request.use(
  (requestConfig) => {
    let token = sessionStorage.getItem('token') //store.state.token // sessionStorage.getItem('token')
    // Authorization 属性，要和后端对接一下，是否是这个属性。也可能是其它
    token && (requestConfig.headers['Authorization'] = token)
    // console.log('请求前的config:', requestConfig)
    //显示 加载数据的动画
    // loadingInstance = Loading.service({
    //   fullscreen: true,
    //   text: '正在为您努力加载中...',
    //   background: 'rgba(0,0,0,0.1)'
    // })

    return requestConfig
  },
  (error) => Promise.reject(error)
)

http.interceptors.response.use(
  (res) => {
    // console.log("响应后:", res)  //看一下如何正确的获取token值；
    // 判断toKen如果获取，决定下一行代码的写法：
    // 还有可能是： res.data.data.token;
    // res.data.token && sessionStorage.setItem('token', res.data.token)

    // 成功响应后，关闭动画
    // loadingInstance.close()
    return res.data
  },
  (error) => {
    // console.log("响应后err:", error)
    // loadingInstance.close()
    let _resp = error.response
    // console.log(_resp)
    // 主要是应对token过期，或者是无效的token.
    switch (_resp.status) {
      case 401:
        sessionStorage.clear()
        return router.push('/login')
    }
    return Promise.reject(error.response.data)
  }
)
